//
// Created by LiuYou on 2021/5/9.
//

#include <cstdio>
#include <cstdlib>
#include <sys/stat.h>


static int fileType(char* const* argv);

int main(int argc, char** argv) {
    if (argc < 2) {
        std::fprintf(stderr, "Usage...\n");
        std::exit(1);
    }

    std::fprintf(stdout, "%c\n", fileType(argv));


    return 0;
}

static int fileType(char* const* argv) {
    struct stat fileStatus{};
    if (stat(argv[1], &fileStatus) < 0) {
        perror("stat()");
        exit(1);
    }

    if (S_ISDIR(fileStatus.st_mode)) {
        return 'd';
    } else if (S_ISCHR(fileStatus.st_mode)) {
        return 'c';
    } else if (S_ISBLK(fileStatus.st_mode)) {
        return 'b';
    } else if (S_ISREG(fileStatus.st_mode)) {
        return '-';
    } else if (S_ISLNK(fileStatus.st_mode)) {
        return 'l';
    } else if (S_ISSOCK(fileStatus.st_mode)) {
        return 's';
    } else if (S_ISFIFO(fileStatus.st_mode)) {
        return 'p';
    } else {
        return '?';
    }
}
